sequenceDiagram
participant StorageClient
participant StorageProvider
participant StorageMiningSubsystem
participant StorageMarketActor
participant DataTransfer
StorageClient -->> StorageMarketActor: AddBalance()
StorageProvider -->> StorageMarketActor: AddBalance()
StorageClient -->+ StorageProvider: OnStorageDealProposal(DealRequest)
StorageProvider -->- StorageClient: DealResponse
StorageClient -->+ DataTransfer: OpenPushTransferRequest(provider, voucher, payload, selector)
DataTransfer -->+ StorageProvider: ValidatePush(client, voucher, payload, selector)
StorageProvider -->- DataTransfer: accept
DataTransfer -->- StorageProvider: OnDataTransferEvent(DataTransferComplete, state)
activeate StorageProvider
StorageProvider -->> StorageProvider: verifyStorageDealProposal(proposal)
StorageProvider -->> StorageProvider: verifyPieceCID(proposal, payloadCID)
StorageProvider -->> StorageProvider: signStorageDealProposal(proposal)
StorageProvider -->- StorageClient: DealResponse (updated)
StorageProvider -->> StorageProvider: publishStorageDealMessage(message)
StorageProvider -->+ StorageMarketActor: PublishStorageDeal(message)
StorageMarketActor -->> StorageMarketActor: generateStorageDealID()
StorageMarketActor -->> StorageMarketActor: lockFund()
StorageMarketActor -->- StorageProvider: dealID
StorageProvider -->> StorageClient: DealResponse (updated)
StorageProvider -->> StorageMiningSubsystem: HandleStorageDeal(deal)
StorageMiningSubsystem -->> StorageMinerActor: CommitSector()
StorageProvider -->> StorageClient: DealResponse (updated)
CronActor -->> StorageMinerActor: NotifyOfPoStChallenge()
StorageMiningSubsystem -->> StorageMinerActor: SubmitPoSt()
StorageMinerActor -->> StorageMinerActor: activateSector
StorageMinerActor -->> StorageProvider: NotifyOfOnChainDealStatus(DealActive)
StorageProvider -->> StorageClient: DealResponse (updated)
CronActor -->> StorageMinerActor: NotifyOfPoStChallenge()/CheckSurprisePoStSubmissionHappened()
StorageMinerActor -->> StorageProvider: NotifyOfOnChainDealStatus(DealExpired/DealFailing)
StorageProvider -->> StorageClient: DealResponse (updated)